var a= '';
var js_token='';
/**
 *计算字符串长度的函数
 *
 */
function JHshStrLen(sString)
{
        var sStr,iCount,i,strTemp ;

        iCount = 0 ;
        sStr = sString.split("");
        for (i = 0 ; i < sStr.length ; i ++)
        {
                strTemp = escape(sStr[i]);
                if (strTemp.indexOf("%u",0) == -1)
                {
                        iCount = iCount + 1 ;
                }
                else
                {
                        iCount = iCount + 2 ;
                }
        }

        return iCount ;
}



/**
 * checkbox选择控制
 *
 */
//按照类来选择
function selectAll(class_name) {
        //var checked = $("#selectall").attr("checked");

        $("."+class_name).each(function() {
                var subchecked = $(this).attr("checked");
                if (subchecked != true)
                        $(this).click();
        });
}

function unSelectAll(class_name) {
        //var checked = $("#selectall").attr("checked");

        $("."+class_name).each(function() {
                var subchecked = $(this).attr("checked");
                if (subchecked == true)
                        $(this).click();
        });
}

function getSelectValues() {
        id = [];
        $("input[type='checkbox']:checked").each(function(){
                id.push($(this).val());
        });
        return id.join(',');
}


//最常用的

$(function() {
        //showCss();

        js_token = $('#js_token').val();
        //setInterval( 'cleanName()',5000 );
        $("#checkAll").click(function(){
                if(this.checked){
                        $("input[type='checkbox']").each(function(i){
                                this.checked=true;
                        });
                }else{
                        $("input[type='checkbox']").each(function(i){
                                this.checked=false;
                        });
                }
        });
//shortcuts
});
function cleanName(){
        a = '';
}

function checkLogin(){
        delCookie('log_refer');
        if(0 == MID){
                var url = location.href;
                setCookie('log_refer',url,'1000000' );
                window.location.href = APP+'/Index/login';
        }
}


function escapeHTML(s) {
        return s.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
};


function ReplaceAll(str, sptr, sptr1)
{
        while (str.indexOf(sptr) >= 0)
        {
                str = str.replace(sptr, sptr1);
        }
        return str;
}


function handlerIframe(){
        // alert(ymPrompt.getPage().contentWindow.document.body.innerHTML);
        ymPrompt.close();
}




var keyStr = "ABCDEFGHIJKLMNOP" +
"QRSTUVWXYZabcdef" +
"ghijklmnopqrstuv" +
"wxyz0123456789+/" +
"=";

function encode64(input)
{
        input = escape(input);
        var output = "";
        var chr1, chr2, chr3 = "";
        var enc1, enc2, enc3, enc4 = "";
        var i = 0;

        do
        {
                chr1 = input.charCodeAt(i++);
                chr2 = input.charCodeAt(i++);
                chr3 = input.charCodeAt(i++);

                enc1 = chr1 >> 2;
                enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
                enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
                enc4 = chr3 & 63;

                if (isNaN(chr2))
                {
                        enc3 = enc4 = 64;
                }
                else if (isNaN(chr3))
                {
                        enc4 = 64;
                }

                output = output +
                keyStr.charAt(enc1) +
                keyStr.charAt(enc2) +
                keyStr.charAt(enc3) +
                keyStr.charAt(enc4);
                chr1 = chr2 = chr3 = "";
                enc1 = enc2 = enc3 = enc4 = "";
        } while (i < input.length);

        return output;
}

function decode64(input)
{
        var output = "";
        var chr1, chr2, chr3 = "";
        var enc1, enc2, enc3, enc4 = "";
        var i = 0;

        // remove all characters that are not A-Z, a-z, 0-9, +, /, or =
        var base64test = /[^A-Za-z0-9\+\/\=]/g;
        if (base64test.exec(input))
        {
                alert("There were invalid base64 characters in the input text.\n" +
                        "Valid base64 characters are A-Z, a-z, 0-9, '+', '/', and '='\n" +
                        "Expect errors in decoding.");
        }
        input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");

        do
        {
                enc1 = keyStr.indexOf(input.charAt(i++));
                enc2 = keyStr.indexOf(input.charAt(i++));
                enc3 = keyStr.indexOf(input.charAt(i++));
                enc4 = keyStr.indexOf(input.charAt(i++));

                chr1 = (enc1 << 2) | (enc2 >> 4);
                chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
                chr3 = ((enc3 & 3) << 6) | enc4;

                output = output + String.fromCharCode(chr1);

                if (enc3 != 64)
                {
                        output = output + String.fromCharCode(chr2);
                }
                if (enc4 != 64)
                {
                        output = output + String.fromCharCode(chr3);
                }

                chr1 = chr2 = chr3 = "";
                enc1 = enc2 = enc3 = enc4 = "";
        } while (i < input.length);
        return unescape(output);
}

$(function(){
        showTips();

        if(MID!=0){
                getMsgCount();
        }
});

function setCookie(name,value,exp) {
        var LargeExpDate = new Date ();
        expires = exp?ex:exp;
        LargeExpDate.setTime(LargeExpDate.getTime() + (3600*1000*24*30));
        path = '/';
        document.cookie = name + "="+ escape (value) + ";expires=" + LargeExpDate.toGMTString()+path;
}

function getCookie(name) {
        var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
        if(arr != null) return unescape(arr[2]); return null;
}

function delCookie(name){
        var exp = new Date();
        exp.setTime(exp.getTime() - 1);
        var cval=getCookie(name);
        path = '/';
        if(cval!=null) document.cookie= name + "="+cval+";expires="+exp.toGMTString()+path;
}
/**
 *      显示名片
 */
function showTips() {
        if(TPIS =='1'){
                                   $('a.tips').cluetip({
                width: 350,
                cluetipClass: 'jtip',
                showTitle: false,
                clickThrough:true,
                arrows: false,
                dropShadow: false,
                hoverIntent: false,
                tracking: false,
                sticky: true,
                mouseOutClose: true,
                leftOffset:6,
                topOffset:5,
                cluezIndex:30,
                closePosition: 'title'
        });
        }
 
}
function getMsgCount(){
        var num = 0;
        var href = '';
        $.post(TS+'/Index/getMsgCount',{
                uid:MID
        },function(result){

                if(result != 0){
                        JSON.parse(result,function(key,value){
                                //value = parseInt(value);
                                if(value != 0 && key){
                                        num = num + value;
                                        $('#'+key+MID).html('('+value+'条'+')');
                                        switch(key){
                                                case 'friend':
                                                        href = TS+'/Notify/index/t/fri';
                                                        break;
                                                case 'wall':
                                                        href = TS+'/Space/#wall';
                                                        break;
                                                case 'message':
                                                        href = TS+'/Notify/inbox';
                                                        break;
                                                default:
                                                        href = TS+'/Notify/index/t/sys/';
                                                        break;
                                        }

                                }
                        });
                        if(num == 0){
                                $('#msg_top').remove();
                        }else{
                                $('#msg_top_href').attr('href',href).text(num);
                                $('#msg_top').css('display','block');
                        }
                }
        });
}
function showCss(){
//$(document).not('input').bind('keydown', 'ctrl+shift+c',function (evt){	loadScript('http://westciv.com/xray/thexray.js'); return false; });
//showKey();
}

function showKey(){
        $(document+':not(input)').bind('keydown', 'right',function (evt){
                nextPage(); return true;
        });
        $(document+':not(input)').bind('keydown', 'left',function (evt){
                prePage(); return true;
        });
}
function nextPage(){
        var page = $('#Pagination').html();
        if(page){
                location.href = $('#Pagination').children('a:last').attr('href');
        }
}
function prePage(){
        var page = $('#Pagination').html();
        if(page){
                location.href = $('#Pagination').children('a:first').attr('href');
        }
}
function loadScript(scriptURL){
        var scriptElem = document.createElement('SCRIPT');
        scriptElem.setAttribute('language', 'JavaScript');
        scriptElem.setAttribute('src', scriptURL);
        document.body.appendChild(scriptElem);
}
function alertAuthor(){
        var re = /[^\d]/g;   //判断字符串是否为数字     //判断正整数 /^[1-9]+[0-9]*]*$/
        var mid = a;
        var test = re.test(mid);
        if(!test){
                a ='';
                location.href = TS+'/space/'+mid;
        }
        switch(a){
                case 'sam':
                        alert('Sam');
                        break;
                case 'nonant':
                        alert('冷浩然');
                        break;
                case 'sst':
                        alert('水上铁');
                        break;
                case 'haixia':
                        alert('海虾');
                        break;
                case 'shoutaimu':
                        alert('兽汰姆');
                        break;
                default:
                        a = '';
        }
        a = '';

}
function gotoHome(){
        if(MID!=0) location.href = TS+'/Home/index';
}
function gotoMySpace(){
        if(MID!=0) location.href = TS+'/space/'+MID;
}

function checkJsToken(txt) {
        if(txt == 'error'){
                Alert('请不要频繁提交');
                $( '.btn_big').removeAttr('disabled');
                return false;
        }
        if(txt == 'fail'){
                Alert('说得太快了。休息会吧');
                $( '.btn_big').removeAttr('disabled');
                return false;
        }
        return true
}

//全局分享
function ts_sharePop(id,url,type){
	var classId = '#BtnShare_'+id;
	$(classId).attr('disabled','true');
	
	$.post(url+"/addShare_check/", {aimId:id}, function(txt){
			if(txt==1){
					ymPrompt.win(url+'/addShare/aimId/'+id+'/type/'+type,500,'315','分享',null,null,null,{id:'a'});
			}else if(txt==-1){
					ymPrompt.errorInfo('请不要分享自己发布的东西!');
			}else if(txt==-2){
					ymPrompt.errorInfo('您已经分享过,请不要重复分享!');
			}else if(txt==-3){
					ymPrompt.errorInfo('您没有权限分享!');
			}else{
					ymPrompt.errorInfo('参数出错,请重试!');
			}
			
			$(classId).attr('disabled','');
	});
}


// 输入框 @用户 列表
(function(){

var config = {
		boxID:"autoTalkBox",
		valuepWrap:'autoTalkText',
		wrap:'recipientsTips',
		listWrap:"autoTipsUserList",
		position:'autoUserTipsPosition',
		positionHTML:'<span id="autoUserTipsPosition">&nbsp;123</span>',
		className:'autoSelected'
	};
//var html = '<div id="autoTalkBox" style="text-align:left;z-index:-2000;top:$top$px;left:$left$px;width:$width$px;height:$height$px;z-index:1;position:absolute;scroll-top:$SCTOP$px;overflow:hidden;overflow-y:auto;visibility:hidden;word-break:break-all;word-wrap:break-word;"><span id="autoTalkText" style="font-size:14px;margin:0;"></span></div><div id="recipientsTips" class="recipients-tips"><div style="font-size:12px;text-align:left;font-weight: bold;padding:2px;">格式：@+W3账号、姓名</div><ul id="autoTipsUserList"></ul></div>';
//var listHTML = '<li style="text-align:left"><a title="$ACCOUNT$" rel="$ID$" >$NAME$(@$SACCOUNT$)</a></li>';
var html = '<div id="autoTalkBox" style="text-align:left;z-index:-2000;top:$top$px;left:$left$px;width:$width$px;height:$height$px;z-index:1;position:absolute;scroll-top:$SCTOP$px;overflow:hidden;overflow-y:auto;visibility:hidden;word-break:break-all;word-wrap:break-word;"><span id="autoTalkText" style="font-size:14px;margin:0;"></span></div><div id="recipientsTips" class="recipients-tips"><h4>格式：@用户昵称</h4><ul id="autoTipsUserList"></ul></div>';
var listHTML = '<li style="text-align:left"><a rel="$ID$" >@$SACCOUNT$</a></li>';


/*
 * D 基本DOM操作
 * $(ID)
 * DC(tn) TagName
 * EA(a,b,c,e)
 * ER(a,b,c)
 * BS()
 * FF
 */
var D = {
	$:function(ID){
		return document.getElementById(ID)
	},
	DC:function(tn){
		return document.createElement(tn);
	},
    EA:function(a, b, c, e) {
        if (a.addEventListener) {
            if (b == "mousewheel") b = "DOMMouseScroll";
            a.addEventListener(b, c, e);
            return true
        } else return a.attachEvent ? a.attachEvent("on" + b, c) : false
    },
    ER:function(a, b, c) {
        if (a.removeEventListener) {
            a.removeEventListener(b, c, false);
            return true
        } else return a.detachEvent ? a.detachEvent("on" + b, c) : false
    },
	BS:function(){
		var db=document.body,
			dd=document.documentElement,
			top = db.scrollTop+dd.scrollTop;
			left = db.scrollLeft+dd.scrollLeft;
		return { 'top':top , 'left':left };
	},
	
	FF:(function(){
		var ua=navigator.userAgent.toLowerCase();
		return /firefox\/([\d\.]+)/.test(ua);
	})()
};

/*
 * TT textarea 操作函数
 * info(t) 基本信息
 * getCursorPosition(t) 光标位置
 * setCursorPosition(t, p) 设置光标位置
 * add(t,txt) 添加内容到光标处
 */
var TT = {
	
	info:function(t){
		var o = t.getBoundingClientRect();
		var w = t.offsetWidth;
		var h = t.offsetHeight;
		var s = t.style;
		return {top:o.top, left:o.left, width:w, height:h , style:s};
	},
	
	getCursorPosition: function(t){
		if (document.selection) {
			t.focus();
			var ds = document.selection;
			var range = null;
			range = ds.createRange();
			var stored_range = range.duplicate();
			stored_range.moveToElementText(t);
			stored_range.setEndPoint("EndToEnd", range);
			t.selectionStart = stored_range.text.length - range.text.length;
			t.selectionEnd = t.selectionStart + range.text.length;
			return t.selectionStart;
		} else return t.selectionStart
	},
	
	setCursorPosition:function(t, p){
		var n = p == 'end' ? t.value.length : p;
		if(document.selection){
			var range = t.createTextRange();
			range.moveEnd('character', -t.value.length);         
			range.moveEnd('character', n);
			range.moveStart('character', n);
			range.select();
		}else{
			t.setSelectionRange(n,n);
			t.focus();
		}
	},
	
	add:function (t, txt){
		var val = t.value;
		var wrap = wrap || '' ;
		if(document.selection){
			document.selection.createRange().text = txt;  
		} else {
			var cp = t.selectionStart;
			var ubbLength = t.value.length;
			t.value = t.value.slice(0,t.selectionStart) + txt + t.value.slice(t.selectionStart, ubbLength);
			this.setCursorPosition(t, cp + txt.length); 
		};
	},
	
	del:function(t, n){
		var p = this.getCursorPosition(t);
		var s = t.scrollTop;
		t.value = t.value.slice(0,p - n) + t.value.slice(p);
		this.setCursorPosition(t ,p - n);
		D.FF && setTimeout(function(){t.scrollTop = s},10);
		
	}

}


/*
 * DS 数据查找
 * inquiry(data, str, num) 数据, 关键词, 个数
 * 
 */

var DS = {
	inquiry:function(data, str, num){
		//if(str == '') return friendsData.slice(0, num);

		var reg = new RegExp(str, 'i');
		var i = 0;
		//var dataUserName = {};
		var sd = [];

		while(sd.length < num && i < data.length){
			if(reg.test(data[i]['user'])){
				sd.push(data[i]);
				//dataUserName[data[i]['user']] = true;
			}
			i++;
		}			
		return sd;
	}
}


/*
 * selectList
 * _this
 * index
 * list
 * selectIndex(code) code : e.keyCode
 * setSelected(ind) ind:Number
 */
var selectList = {
	_this:null,
	index:-1,
	list:null,
	selectIndex:function(code){
		if(D.$(config.wrap).style.display == 'none') return true;
		var i = selectList.index;
		switch(code){
		   case 40:
			 i = i + 1;
			 break
		   case 38:
			 i = i - 1;
			 break
		   case 13:
			return selectList._this.enter();
			break
		   case 32:
			return selectList._this.enter();
			break
		}

		i = i >= selectList.list.length ? 0 : i < 0 ? selectList.list.length-1 : i;
		return selectList.setSelected(i);
	},
	setSelected:function(ind){
		if(selectList.index >= 0) selectList.list[selectList.index].className = '';
		selectList.list[ind].className = config.className;
		selectList.index = ind;
		return false;
	}

}

var AutoTips = function(A){
	var elem = A.id ? D.$(A.id) : A.elem;
	var checkLength = 10;
	var _this = {};
	var key = '';

	_this.start = function(){
		if(!D.$(config.boxID)){
			var h = html.slice();
			var info = TT.info(elem);
			var div = D.DC('DIV');
			var bs = D.BS();
			h = h.replace('$top$',(info.top + bs.top)).
					replace('$left$',(info.left + bs.left)).
					replace('$width$',info.width).
					replace('$height$',info.height).
					replace('$SCTOP$','0');
			div.innerHTML = h;
			var last = document.body.lastChild;
			document.body.insertBefore(div,last);
			//document.body.appendChild(div);	// IE6 下报错的问题
		}else{
			_this.updatePosstion();
		}
	}
	
  	_this.keyupFn = function(e){
		var e = e || window.event;
		var code = e.keyCode;
		if(code == 38 || code == 40 || code == 13) {
			if(code==13 && D.$(config.wrap).style.display != 'none'){
				//_this.enter();
			}
			return false;
		}
		var cp = TT.getCursorPosition(elem);
		if(!cp) return _this.hide();
		var valuep = elem.value.slice(0, cp);
		var val = valuep.slice(-checkLength);
		var chars = val.match(/(\w+)?@(\S+)$|@$/);
		if(chars == null) return _this.hide();
		var char = chars[2] ? chars[2] : '';
		D.$(config.valuepWrap).innerHTML = valuep.slice(0,valuep.length - char.length).replace(/\n/g,'<br/>').
											replace(/\s/g,'&nbsp;') + config.positionHTML;
		_this.showList(char);
	}

	_this.showList = function(char){
		key = char;
		if( key.length<1 ){
			return;
		}

		$.get(A.url,{key:key},function(txt){
			if( txt=='' ){_this.hide();return;}
			var data = eval("(" + txt + ")");
			//var data = DS.inquiry(txt, char, 5);
			var html = listHTML.slice();
			var h = '';
			var len = data.length;
			if(len == 0){_this.hide();return;}
			var reg = new RegExp(char);
			var em = '<em>'+ char +'</em>';
			for(var i=0; i<len; i++){
				var hm = data[i]['uname'].replace(reg,em);
				h += html.replace('$SACCOUNT$',hm).replace('$ID$',data[i]['uname']);
				/*h += html.replace(/\$ACCOUNT\$|\$NAME\$/g,data[i]['fullname']).
							replace('$SACCOUNT$',hm).replace('$ID$',data[i]['uname']);*/
			}
			
			_this.updatePosstion();
			var p = D.$(config.position).getBoundingClientRect();
			var bs = D.BS();
			var d = D.$(config.wrap).style;
			d.top = p.top + 20 + bs.top + 'px';
			d.left = p.left - 5 + 'px';
			D.$(config.listWrap).innerHTML = h;
			_this.show();
		});
	}
	
	
	_this.KeyDown = function(e){
		var e = e || window.event;
		var code = e.keyCode;
		if(code == 38 || code == 40 || code == 13 || code==32){
			return selectList.selectIndex(code);
		}
		return true;
	}
	
	_this.updatePosstion = function(){
		var p = TT.info(elem);
		
		var bs = D.BS();
		var d = D.$(config.boxID).style;
		d.top = p.top + bs.top +'px';
		d.left = p.left + bs.left + 'px';
		d.width = p.width+'px';
		d.height = p.height+'px';
		D.$(config.boxID).scrollTop = elem.scrollTop;
	}

	_this.show = function(){
		selectList.list = D.$(config.listWrap).getElementsByTagName('li');
		selectList.index = -1;
		selectList._this = _this;
		_this.cursorSelect(selectList.list);
		elem.onkeydown = _this.KeyDown;
		selectList.setSelected(0);
		//D.$(config.wrap).style.display = 'block';
		$("#"+config.wrap).fadeIn("fast");
	}

	_this.cursorSelect = function(list){
		for(var i=0; i<list.length; i++){
			list[i].onmouseover = (function(i){
				return function(){selectList.setSelected(i)};
			})(i);
			list[i].onclick = _this.enter;
			//D.EA(list[i], 'click', function(){alert(1)}, false);
		}
	}

	_this.hide = function(){
		selectList.list = null;
		selectList.index = -1;
		selectList._this = null;
		D.ER(elem, 'keydown', _this.KeyDown);
		//D.$(config.wrap).style.display = 'none';
		$("#"+config.wrap).fadeOut("fast");
	}
	
	_this.bind = function(){

		elem.onkeyup = _this.keyupFn;
		elem.onclick = _this.keyupFn;
		if (navigator.userAgent.indexOf("MSIE") == -1){
        	elem.oninput = _this.keyupFn;
        }

		$('body').live('click',function(){
			setTimeout(_this.hide, 100)
		});
		//elem.onblur = function(){setTimeout(_this.hide, 100)}
	}
	
	_this.enter = function(){
		TT.del(elem, key.length, key);
		TT.add(elem, selectList.list[selectList.index].getElementsByTagName('A')[0].rel+' ');
		_this.hide();
		return false;
	}

	return _this;
	
}

window.userAutoTips = function(args){
		var a = AutoTips(args);
			a.start();
			a.bind();
	}
})()